package com.darrenchan.netease03

/**
  * 定义类的时候： 把伴生类和伴生对象放在一个文件中
  *
  * 其他的如果只是在当前这个文件中使用一次的类，那么可以定义在这个文件中
  * 如果被使用多次，最好定义在一个独立的scala文件中
  */


/**
  * 如果属性和方法定义在object组件中，可以直接使用类名来访问
  * 这是Java中的static用法
  */
object ObjectTest11 {
  val id: Int = 120122222
  def m1(x: Int) = x + 1
}

class ObjectTest22 {
  val id: Int = 120122222
  def m1(x: Int) = x + 1
}

object ObjectTest {
  def main(args: Array[String]): Unit = {
    //实例对象
    var obj22: ObjectTest22 = new ObjectTest22()
    println(obj22.id)
    println(obj22.m1(4))


    //静态属性和方法
    println(ObjectTest11.id)
    println(ObjectTest11.m1(4))

    //不能加参数，不能加()
    val obj11_1 = ObjectTest11
    val obj11_2 = ObjectTest11

    //object修饰的类，就是一个单例对象
    //注意哦！！！
    //==在scala中是调用的equals方法
    //比较引用地址，应该用eq和ne
    println(obj11_1 == obj11_2)
    println(obj11_1 eq obj11_2)
    println(obj11_1 ne obj11_2)
    println(obj11_1.equals(obj11_2))
  }
}
